package com.iwomy.secureplat.platform.vo;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.iwomy.secureplat.platform.entity.BasicDeviceEventRecordEntity;
import com.iwomy.secureplat.platform.transmission.entity.SensorTransmissionData;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 设备信息
 *
 * @author pig
 * @date 2023-11-21 10:34:52
 */
@Data
@Schema(description = "设备信息")
public class BasicDeviceVO {


	/**
	 * ID
	 */
	@TableId(type = IdType.ASSIGN_ID)
	@Schema(description = "ID")
	private Long id;

	/**
	 * 二维码
	 */
	@Schema(description = "二维码")
	private String qrcode;

	/**
	 * IMEI
	 */
	@Schema(description = "IMEI")
	private String imei;

	/**
	 * IMEI别名
	 */
	@Schema(description = "IMEI别名")
	private String imeiAlias;

	/**
	 * 设备类型
	 */
	@Schema(description = "设备类型")
	private String deviceType;

	/**
	 * 设备型号
	 */
	@Schema(description = "设备型号")
	private String deviceModelName;

	/**
	 * 生产商
	 */
	@Schema(description = "生产商")
	private String producer;

	/**
	 * 设备批次号
	 */
	@Schema(description = "设备批次号")
	private String deviceBatchNumber;


	/**
	 * IMSI
	 */
	@Schema(description = "IMSI")
	private Long imsi;

	/**
	 * 所属单位
	 */
	@Schema(description = "所属单位")
	private String deptName;

	/**
	 * 装箱号
	 */
	@Schema(description = "装箱号")
	private String packingNumber;

	/**
	 * ICCID
	 */
	@Schema(description = "ICCID")
	private Long iccid;

	/**
	 * 所属单位ID
	 */
	@Schema(description = "所属单位ID")
	private Long deptId;

	/**
	 * 安装点位
	 */
	@Schema(description = "安装点位")
	private Long installLocationId;

	/**
	 * 安装人员
	 */
	@Schema(description = "安装人员")
	private String installWorker;

	/**
	 * 安装人员电话
	 */
	@Schema(description = "安装人员电话")
	private String installWorkerPhone;


	/**
	 * 设备状态 10 未激活 20 正常 30 故障 40 报警 50 离线
	 */
	@Schema(description = "设备状态 10 未激活 20 正常 30 故障 40 报警 50 离线")
	private Integer deviceState;

	/**
	 * 设备状态
	 */
	@Schema(description = "设备状态")
	private String deviceStateName;

	/**
	 * 设备使用状态 10 正常使用 20 设备手动停用 30 设备到期停用。
	 */
	@Schema(description = "设备使用状态 10 正常使用 20 设备手动停用 30 设备到期停用。")
	private Integer useState;

	/**
	 * 设备绑定状态 10未出库未绑定 20 出库未绑定 30 已绑定
	 */
	@Schema(description = "设备绑定状态 10未出库未绑定 20 出库未绑定 30 已绑定")
	private Integer bindState;

	/**
	 * 库存状态 10 库存 20 已出库
	 */
	@Schema(description = "库存状态 10 库存 20 已出库")
	private Integer stocks;

	/**
	 * 信号
	 */
	@Schema(description = "信号")
	private String signal;

	/**
	 * 电量
	 */
	@Schema(description = "电量")
	private String quantity;

	/**
	 * 模式 1 工程(默认)
	 */
	@Schema(description = "模式 1 工程(默认)")
	private Integer model;

	/**
	 * 安装点位
	 */
	@Schema(description = "安装点位")
	private String installAddress;

	/**
	 * 经度
	 */
	@Schema(description="经度")
	private BigDecimal longitude;

	/**
	 * 纬度
	 */
	@Schema(description="纬度")
	private BigDecimal latitude;

	/**
	 * 详细地址
	 */
	@Schema(description="详细地址")
	private String detailAddress;

	/**
	 * 建筑物
	 */
	@Schema(description="建筑物")
	private String buildingName;

	/**
	 * 10启用 20禁用
	 */
	@Schema(description = "10启用 20禁用")
	private Integer state;


	/**
	 * 最近的事件时间
	 */
	@Schema(description = "最近的事件时间")
	private LocalDateTime eventTime;

	/**
	 * 创建时间
	 */
	@Schema(description = "创建时间")
	private LocalDateTime createTime;

	/**
	 * 安装地点实体
	 */
	private BasicInstallLocationVO basicInstallLocation;

	/**
	 * 事件记录
	 */
	private List<BasicDeviceEventRecordEntity> recordList;

	/**
	 * 设备属性值
	 */
	private List<BasicDeviceAttributeDataVO> attributeDataList;


	/**
	 * 设备类型
	 */
	@Schema(description = "设备类型")
	private Long deviceTypeId;
	/**
	 * 设备类型名称
	 */
	@Schema(description = "设备类型名称")
	private String deviceTypeName;

	/**
	 * 设备型号
	 */
	@Schema(description = "设备型号")
	private Long deviceModelId;

	/**
	 * 最近事件时间
	 */
	@Schema(description = "最近事件时间")
	private LocalDateTime recentEventTime;

	/**
	 * 在线状态10 离线，20在线
	 */
	@Schema(description = "在线状态10 离线，20在线")
	private Integer online;

	/**
	 * 设备属性
	 */
	@Schema(description = "设备属性")
	private SensorTransmissionData sensorTransmissionData;

	/**
	 * 设备属性内容
	 */
	@Schema(description = "设备属性内容")
	private String content;

	/**
	 * 10 通用设备 20视频类设备
	 */
	@Schema(description = "10 通用设备 20视频类设备")
	private Integer type;
}